package com.shlh.saas.service.canton.exhibitor.impl;

import com.shlh.saas.entity.canton.exhibitor.BaseCantonFairExhibitor;

import java.util.List;

/**
 * 届数展商处理器接口
 * 定义每个届数的通用处理方法
 */
public interface SessionExhibitorProcessor {

    /**
     * 获取届数标识
     */
    String getSessionNumber();

    /**
     * 根据关键词搜索展商
     */
    List<? extends Object> searchByKeyword(String keyword, int offset, int limit);

    /**
     * 根据关键词和筛选条件搜索展商
     */
    List<? extends Object> searchWithFilters(String keyword, String product, String category,
                                           String companyType, String companyScale, String hasContact,
                                           int offset, int limit);

    /**
     * 统计关键词搜索结果数量
     */
    long countByKeyword(String keyword);

    /**
     * 统计关键词和筛选条件搜索结果数量
     */
    long countWithFilters(String keyword, String product, String category,
                         String companyType, String companyScale, String hasContact);

    /**
     * 根据ID获取展商信息
     */
    Object getById(Long id);

    /**
     * 转换为BaseCantonFairExhibitor（脱敏）
     */
    BaseCantonFairExhibitor convertToBase(Object exhibitor);

    /**
     * 转换为BaseCantonFairExhibitor（不脱敏，用于导出）
     */
    BaseCantonFairExhibitor convertToBaseForExport(Object exhibitor);

    /**
     * 获取指定字段的值
     */
    String getFieldValue(Long exhibitorId, String fieldName);
}
